{{tag> programmation BROUILLON}}
----
====== Créer des interfaces graphiques avec Tkinter ======

===== Présentation =====

**Tkinter** est une librairie basique mais très simple d'utilisation pour construire rapidement des interfaces graphiques avec [[:python|Python]].

Le style de widgets n'est pas très esthétique (question de goût) mais ça reste tout de même une bonne base pour commencer dans le développement d'interface graphique (GUI). 

===== Installation =====

[[:tutoriel:comment_installer_un_paquet|Installez les paquets]]:
  * **[[apt>python-tk]]**
  * **[[apt>python-imaging-tk]]** pour la gestion des images sous tkinter 
  * **[[apt>python3-tk]]** pour la version 3.x de python.
Ceci peut se résumer avec l'outil [[:apt-get]] en saisissant dans un [[:terminal]] les [[:commande_shell|commandes]] suivantes:
<code>sudo apt-get install python-tk
sudo apt-get install python-imaging-tk
sudo apt-get install python3-tk
</code>

===== Etude d'un programme simple =====
Pour commencer, regardez et essayer de comprendre la structure du code :

<file python>
#!/usr/bin/env python
# -*- coding: Latin-1 -*-
#
#  Programme Tkinter.py
#  


from Tkinter import *  #Pour python3.x Tkinter devient tkinter

class ApplicationBasic():
	'''Application principale'''
	def __init__(self):
		'''constructeur'''
		self.fen = Tk()
		self.fen.title('Tkinter')
		
		self.bou_action = Button(self.fen)
		self.bou_action.config(text='Action', command=self.action)
		self.bou_action.pack()
		
		self.bou_quitter = Button(self.fen)
		self.bou_quitter.config(text='Quitter', command=self.fen.destroy)
		self.bou_quitter.pack()
  
		self.fen.mainloop()
		
	def action(self):
		'''Action sur un bouton'''
		self.lab = Label(self.fen)
		self.lab.config(text='Bravo!!!')
		self.lab.pack()
      
      
if __name__ == '__main__':
	app = ApplicationBasic()
</file>
chaque partie correspond à :
  * importation de la librairie : <file python>from Tkinter import *</file>
  * la création d'une classe : <file python>class ApplicationBasic():</file>
  * la création d'une méthode constructrice : <file python>def __init__(self):</file> 
  * instancier une fenêtre Tk() : <file python>self.fen = Tk()</file>
  * définition du titre de cette fenêtre : <file python>self.fen.title('Tkinter')</file>

  * création d'un simple bouton action : <file python>self.bou_action = Button(self.fen)</file>
     * configuration de ce bouton : <file python>self.bou_action.config(text='Action', command=self.action)</file>
     * mise en place de celui-ci dans la fenêtre avec une méthode de placement : <file python>self.bou_action.pack()</file>
     * définition de la fonction qui sera connecté au bouton //Action// : <file python>
  ef action(self) :
      '''Action sur un bouton'''
      self.lab = Label(self.fen)
      self.lab.config(text='Bravo!!!')
      self.lab.pack()
</file>

  * même travail pour créer un bouton quitter. Ici vous constaterez qu'il n'est pas nécessaire de créer une fonction dédiée à ce bouton, la commande associée faisant le nécessaire : <file python>self.bou_quitter = Button(self.fen)
self.bou_quitter.config(text='Quitter', command=self.fen.destroy)
self.bou_quitter.pack()</file>


  * lancement du gestionnaire d'événements : <file python>self.fen.mainloop()</file>
  * assignation de la classe à une variable :<file python>app = ApplicationBasic()</file>

Enregistrer votre fichier source avec une extension //.py// puis lancez-le depuis un [[:terminal]] en saisissant la [[:commande_shell|commande]] suivante:
<code>python 'fichier.py'</code>

 {{:programmetkinter.png?direct&100|Fenêtre nommée Tkinter avec les deux boutons}}          
{{:terminal:programmetkinter01.png?direct&100|Fenêtre Tkinter après appui sur le bouton //Action//}}

===== Liens =====
  * [[http://wiki.python.org/moin/TkInter|Tkinter]] (En)
  * [[:python]]
  * [[:glade]] : pour créer des GUI facilement

----
//Contributeurs:Boileau jonathan -- Mail: [[boileau_jonathan@hotmail.fr]] //